package BinaryTreePackage;

/**
 * @author Lzm
 * @version 1.0
 */
public class sumOfLeftLeaves_ {

  // 1. 确定参数和返回值
  // 2. 确定终止条件
  // 3. 确定每层的处理逻辑
  public int sumOfLeftLeaves(TreeNode root) {
    // 2. 确定终止条件

    // 当遍历到空节点时说明此节点的左叶子之和为0
    if (root == null){
      return 0;
    }
    // 当遍历到叶子节点时, 其左叶子之和为0
    if (root != null && root.left == null && root.right == null){
      return 0;
    }
    // 3. 确定单层处理逻辑
    if (root.left != null && (root.left.left == null && root.right == null)){
      return root.left.val;
    }
    int leftNumber = sumOfLeftLeaves(root.left);
    // 得到root节点的左叶子节点的值

    int rightNumber = sumOfLeftLeaves(root.right);
    return leftNumber + rightNumber;

  }
}
